const counter = {
  state: {
    count: 0
  },
  // 只有 mutations 中定义的函数，才有权利修改 state 中的数据
  mutations: {
    // 定义修改Store中的数据++的方法
    add (state) {
      // 不要在 mutations 函数中，执行异步操作
      /* setTimeout(() => {
         state.count++
      }, 1000) */
      state.count++
    },
    // 定义带参数的修改Store数据++N的方法
    addN (state, step) {
      state.count += step
    },
    // 定义修改Store中的数据--的方法
    sub (state) {
      state.count--
    },
    // 定义修改Store中的数据--N的方法
    subN (state, step) {
      state.count -= step
    }
  },
  actions: {
    addAsync (context) {
      setTimeout(() => {
        // 在 action 中,不能直接修改 state 的数据;
        // 必须通过 context.commit() 触发某个 mutation 才可以
        context.commit('add')
      }, 1000)
    },
    addAsyncN (context, step) {
      setTimeout(() => {
        context.commit('addN', step)
      }, 1000)
    },
    subAsync (context) {
      setTimeout(() => {
        context.commit('sub')
      }, 1000)
    },
    subAsyncN (context, step) {
      setTimeout(() => {
        context.commit('subN', step)
      }, 1000)
    }
  },
  getters: {
    showNum: state => {
      return '当前最新的数量是【' + state.count + '】'
    }
  }
}
export default counter
